1 REM ***************** 2 REM * MAIL.64 SUBMITTED BY 3 REM * AL JOHNSON & DAVE JOHNSON 4 REM * 2446 SOUTHGATE SQ 5 REM * RESTON, VA 22091 6 REM ***************** 7 REM * LIST 11000- FOR NOTES ON PROG 8 REM ***************** 9 TL=150:RS=9:SUB=1:LL=5 10 DN$="" 11 RX$="" 20 DIM ML$(TL,RS) 30 POKE53281,15:LN=24:RTN$=CHR$(13) 40 GOSUB10700:REM HEADINGS 120 IFN$<>"N"THENGOSUB9000 149 REM##UNDERSCORES 150 GOSUB8000 159 REM##PRINT ADDR 160 GOSUB8100 179 REM##TEST INPUT 180 GETN$:IFN$=""THEN180 190 IFN$<>"E"THEN200 192 GOSUB8200:GOTO149 200 IFN$<>"P"THEN210 205 OPEN4,4:GOSUB8300:CLOSE4 210 IFN$<>"H"THEN213 211 SUB=1:GOTO149 213 IFN$<>"L" THEN 220 214 GOSUB10300:GOTO149 220 IFN$<>"N"THEN260 221 SUB=SUB+1:IFSUB"B"THEN270 265 SUB=SUB-1:IFSUB<1THENSUB=1 266 GOTO149 270 IF N$<>"K" THEN 280 272 GOSUB9400:GOTO149 280 IFN$<>"S"THEN290 285 GOSUB8500:GOTO149 290 IF N$<>"Q"THEN300 293 PRINT"[147]QUITTING NOW":END 300 IFN$<>"U"THEN400 320 GOSUB9100:GOTO149 400 IFN$<>"D"THEN450 420 GOSUB7000:GOTO149 450 IFN$<>"A"THEN470 455 GOSUB7500 469 REM##TEST FOR CONTINUE OF SEARCH 470 IFS1<>1THEN500 472 IFN$="C"THENYX=SRB+1:GOSUB9743 500 GOTO149 7000 REM ###DELETE ENTRY 7020 MSG$="DELETE YOU SURE ??Y" 7030 GOSUB8100:MSG$="D E L E T I N G ":DUB=SUB 7040 GETDE$:IFDE$=""THEN7040 7045 IFDE$<>"Y"THEN7099 7047 GOSUB8100:MSG$="" 7050 FORX=1TORS:ML$(DUB,X)=ML$(DUB+1,X):NEXT 7060 IFDUB=RCTHENRC=RC-1:GOTO7099 7065 DUB=DUB+1:GOTO7050 7099 MSG$="":RETURN 7340 PRINT"[152]ENTER COMMAND SHOWN ON SCREEN[151]" 7500 SUB=RC+1 7520 IF SUB< TL THEN 7550 7540 MSG$="NO ROOM FOR ADD SAVE ":GOTO149 7550 GOSUB8000:GOSUB8100:GOSUB8200:RETURN 8000 REM###PRINT UNDERSCORES 8005 PRINT"[147]" 8010 FORLP=1TO5 8020 PRINT""LP"[164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164]" 8030 NEXTLP 8040 PRINT" PHONE [164][164][164][164][164][164][164][164][164][164][164][164] LBL GRP [164]" 8050 PRINT" XMAS LIST [164] XMAS LBL [164]" 8100 REM###DSPLY ADDRESS 8120 PRINT"" 8130 FORLP=1TOLL 8140 PRINT""ML$(SUB,LP) 8142 POKE198,0 8143 NEXTLP 8144 LP=LP-1 8150 PRINT"";LEFT$(DN$,12);LEFT$(RX$,12);ML$(SUB,LP+1) 8155 PRINT"[145]";LEFT$(RX$,35);ML$(SUB,LP+2) 8160 PRINT"";LEFT$(RX$,16);ML$(SUB,LP+3) 8165 PRINT"[145]";LEFT$(RX$,34);ML$(SUB,LP+4) 8193 GOSUB10000 8194 RETURN 8200 REM###READ FROM SCREEN 8210 PRINT"" 8220 FORLP=1TO5 8225 W1$="" 8230 PRINT 8231 INPUT"";LIN$ 8235 FORX=1TO30 8237 IF MID$(LIN$,X,1)<>"[164]"THEN W1$=W1$+MID$(LIN$,X,1) 8238 IF MID$(LIN$,X,2)="[164][164]" THEN8250 8240 NEXTX 8250 ML$(SUB,LP)=W1$ 8255 LIN$=W1$ 8260 NEXTLP 8262 IF N$<>"E" THEN RC=RC+1 8264 SL=12 8265 INPUT"";FX$:GOSUB10100:ML$(SUB,6)=FR$ 8267 SL=1 8268 PRINT"[145]";LEFT$(RX$,33);:INPUTFX$:GOSUB10100:ML$(SUB,7)=FR$ 8272 PRINT"";LEFT$(RX$,14);:INPUTFX$:GOSUB10100: ML$(SUB,8)=FR$ 8278 PRINT"[145]";LEFT$(RX$,32);:INPUTFX$:GOSUB10100:ML$(SUB,9)=FR$ 8295 RETURN 8300 REM###PRINTENTRY 8330 FORLP=1TOLL 8335 IF LEFT$(ML$(SUB,LP),1)="_"THENPRINT#4,"[160]":GOTO8345 8340 PRINT#4,ML$(SUB,LP) 8345 NEXTLP 8350 PRINT#4,"" 8360 RETURN 8500 REM##PUT TO DISK 8508 OPEN15,8,15 8510 OPEN2,8,2,"@0:MAILLIST,S,W":GOSUB9600 8515 PRINT#2,RC 8520 FORPT=1TORC 8525 FORX=1TORS 8527 IFML$(PT,X)="" THEN PRINT#2,"\":GOTO8535 8530 PRINT#2,ML$(PT,X) 8535 NEXTX 8540 NEXTPT 8550 CLOSE2:GOSUB9600:CLOSE15:RETURN 9000 REM##GET FROM DISK 9005 OPEN15,8,15 9006 IF N$="B"THENOPEN3,8,3,"MAIL.FILE.BK,S,R":GOSUB9600:GOTO9013 9010 OPEN3,8,3,"MAILLIST,S,R":GOSUB9600 9013 INPUT#3,RC 9020 FORPT=1TORC 9024 FORX=1TORS 9030 INPUT#3,ML$(PT,X):GOSUB9600 9033 IF LEFT$(ML$(PT,X),1)="\" THEN ML$(PT,X)="" 9036 NEXTX 9040 NEXTPT 9050 CLOSE3:CLOSE15:RETURN 9100 REM##PERFORM LISTAND FIND 9110 LSB=SUB 9120 PRINT"[147]PRINTER OPTIONS" 9123 PRINT"TO CREATE A DIRECTORY":PRINT"PF5[146][151] LIST ALL ENTRIES 9124 [153]"PF3WAITPOKE LIST FROM THIS POINT" 9125 [153]"ENTER PF1WAITPOKE TO DO SEARCH" 9128 [153]"ENTER PF2POKEWAIT FOR XMAS CARD COUNT" 9130 [153]"ENTER PF4WAITPOKE TO RESET XMAS CARDS":[153]"SENT INDICATORS" 9135 [153]"ENTER PF7WAITPOKE TO RETURN" 9140 [161]LI$:[139]LI$[178]""[167]9140 9145 [139] LI$[178][199](137) [167] 9200 9147 [139] LI$[178][199](138) [167] 9300 9150 [139]LI$[178][199](136)[167]9199 9152 [139]LI$[178][199](135)[167]LSB[178]1:[137]9160 9153 [139]LI$[178][199](133)[167][141]9700:[137]9199 9154 [139]LI$[178][199](134)[167]9160 9156 [137]9140 9160 [159]4,4 9163 [139]LSB[177](RC)[167]9198 9164 [139]ML$(LSB,1)[178]""[167]9183 9165 [152]4,[199](15)[199](145):[152]4,"" 9168 [152]4,[199](16)"10"ML$(LSB,1) 9172 [129]LP[178]2[164]6 9173 [139] ML$(LSB,LP)[178]"" [167] 9178 9176 [152]4,[199](16)"15"ML$(LSB,LP) 9178 [130]LP 9180 [152]4,[199](16)"15XMAS ";ML$(LSB,8)[199](16)"28MISC LB ";ML$(LSB,7) 9181 [161]K$:[139]K$[178]"C"[167][152]4:[160]4:[142] 9183 LSB[178]LSB[170]1 9185 [139]LSB[179]RC[167]9164 9198 [152]4,[199](15)[199](10):[160]4,4 9199 [142] 9200 CC[178]0 9202 [129] X[178]1[164]RC 9210 [139] ML$(X,8)[178]"Y" [167] CC[178]CC[170]1 9220 [130]X 9230 [153]"";[200](DN$,22);"CHRISTMAS CARDS FOUNDPOKEWAIT ";CC 9240 [153]"PRINT#ENTER A COMMAND SHOWN ON SCREENPOKE" 9250 [137]9140 9300 [129]X[178]1[164]RC 9310 [139] ML$(X,8)[178]"Y"[167]ML$(X,9)[178]"N" 9320 [130]X 9330 [153]"";[200](DN$,22);"CHRISTMAS LABELS RESETPOKEWAIT " 9340 [153]"PRINT#ENTER COMMAND SHOWN ON SCREENPOKE" 9350 [137]9140 9400 [153]"LOADBACK UP MAIL LIST FILE TO SEPARATE":[153]"DISK FILE" 9410 [153]"BACKING UP WILL CAUSE PROGRAM TO" 9420 [153]"QUIT AFTER IT IS COMPLETED" 9430 [153]"IS THIS WHAT YOU WANT" 9440 [161]X$:[139] X$[179][177]"Y"[175]X$[179][177]"N" [167]9440 9450 [139] X$[178]"N" [167] [142] 9460 [153]"LOAD BACKUP DISK AND HIT ANY KEY" 9465 [161] X$:[139] X$[178]"" [167] 9465 9470 [159] 15,8,15,"I":[141]9600:[160]15 9475 [159] 15,8,15:[141]9600 9480 [159] 6,8,6,"@0:MAIL.FILE.BK,S,W" 9485 [152]6,RC 9490 [129] X[178]1[164]RC 9495 [129]Y[178]1[164]RS 9496 [139]ML$(X,Y)[178]"" [167] [152]6,"\":[137]9500 9498 [152]6,ML$(X,Y):[141]9600 9500 [130]Y:[130]X 9510 [160]6:[160]15 9520 [153]"BACKUP COMPLETED" 9525 [153]"YOUR BACKUP DISK IS STILL IS IN THE ":[153]" DRIVE" 9530 [153]"JOB ENDS":[128] 9600 [132]15,EN,EM$ 9610 [139] EN[178]0 [167] [142] 9620 [153]"DISK ERROR":[153]EN,EM$:[128] 9700 [143]##SEARCH FOR STRING 9705 S1[178]0:SR$[178]"" 9710 [153]"LOADTYPE IN SEARCH STRING" 9713 [133]SR$ 9715 [139]SR$[178]""[167]9199 9717 [153]"PRINT#SEARCH POKENPRINT#AME ONLY OR POKEAPRINT#LL ADDR":[133]W3$ 9718 [139] W3$[178]"N"[167]L7[178]1:[137]9720 9719 L7[178]6 9720 [153]RTN$"SEARCHING FOR"RTN$""SR$"WAITSTOP" 9725 [153]RTN$"TYPE IN CWAITSTOP TO CANCEL DURING SEARCH" 9730 SRB[178]1:YX[178]1 9741 L[178][195](SR$) 9743 [129]SRB[178]YX[164]RC 9744 [153]"ENTRIES SEARCHED"SRB 9746 [129]X[178]1[164]L7 9748 LT[178][195](ML$(SRB,X)) 9749 L5[178]LT[171]L[170]1 9750 [129]CN[178]1[164]L5 9755 [139][202](ML$(SRB,X),CN,L)[178]SR$[167]9790 9756 [161]CN$:[139]CN$[179][177]"C"[167]9758 9757 MSG$[178]"SEARCH CANCELLED":[142] 9758 [130]CN:[130]X:[130]SRB 9765 MSG$[178]"STRING NOT FOUND":[142] 9790 SUB[178]SRB:S1[178]1:MSG$[178]"C TO CONTINUE SEARCH":[142] 10000 [153]"";[200](DN$,17) 10010 [153]" PRINT#ENTRY NUMBERWAITPOKE"SUB"STOP" 10020 [153]" POKEEPRINT#DIT POKEPPRINT#RINT POKENPRINT#EXT POKEBPRINT#ACK POKEHPRINT#OME PRINT#BPOKEKPRINT#UP" " 10030 PRINT" [151]S[152]AVE [151]U[152]TILITY [151]D[152]EL [151]A[152]DD[144]";" [151]L[152]ABEL [151]Q[152]UIT[151]" 10040 IFFR=0THEN10060 10050 PRINT""LEFT$(MSG$,14)FR"[146][144]":GOTO10070 10060 PRINT""MSG$"[146][144]" 10070 MSG$="":FR=0:RETURN 10100 FR$="" 10105 FORX=1TOSL 10110 IF MID$(FX$,X,1)<>"[164]"THENFR$=FR$+MID$(FX$,X,1) 10120 NEXT 10130 FX$="" 10140 RETURN 10300 PRINT"[147]LABEL PROCESSING" 10310 PRINT"[151]C[152]HRISTMAS LABELS" 10320 PRINT"[151]B[152]USINESS LABELS" 10325 PRINT"[151]M[152]ULTIPLE COPIES 1 LABEL" 10330 PRINT"[151]N[152]O LABELS[144]" 10335 PRINT"ENTER C TO STOP LABEL PRINTING[144]" 10340 GETL$:IFL$<>"C"ANDL$<>"B"ANDL$<>"N"ANDL$<>"M"THEN10340 10350 IF L$="N" THEN RETURN 10355 OPEN4,4:SX=SUB 10357 IFL$="M" THEN 10500 10360 IF L$="C" THEN 10460 10370 INPUT"[147]BUSINESS LABEL GROUP";BG$ 10380 PRINT"HIT ANY KEY WHEN LABELS ALIGNED" 10390 GETK$:IFK$="" THEN 10390 10400 FORSUB=1TOTL 10405 PRINT"SEARCHING";SUB 10410 IF ML$(SUB,7)=BG$ THEN GOSUB8300 10415 GETK$:IFK$="C"THENPRINT#4:CLOSE4:RETURN 10420 NEXTSUB:CLOSE4:SUB=SX:RETURN 10460 PRINT"[147]CHRISTMAS LABELS" 10470 FORSUB=1TOTL 10475 GETK$:IFK$="C"THENPRINT#4:CLOSE4:SUB=SX:RETURN 10480 IF ML$(SUB,8)="Y"ANDML$(SUB,9)<>"Y"THENGOSUB8300:ML$(SUB,9)="Y" 10490 NEXTSUB:CLOSE4:SUB=SX:RETURN 10500 PRINT"[147]ARE YOU POSITIONED AT DESIRED ADDRESS" 10510 GET K$:IFK$="" THEN 10510 10520 IF K$="N" THEN RETURN 10530 INPUT"HOW MANY LABELS";NL 10540 SZ=SUB:FORX6=1TONL 10550 GETK$:IFK$="C"THENPRINT#4:CLOSE4:SUB=SX:RETURN 10560 GOSUB8300 10570 NEXTX6:SUB=SX:CLOSE4:RETURN 10700 PRINT"[147]";LEFT$(RX$,9);"M A I L L I S T 6 4[144]" 10710 PRINTLEFT$(RX$,16);"B Y" 10720 PRINT"[144]";SPC(10);"DAVE & AL JOHNSON" 10730 PRINT"THIS IS A VERSATILE MAIL LIST" 10740 PRINT"PROGRAM. IT WORKS ONLY WITH DISK" 10750 PRINT"IT PRINTS BUSINESS AND CHRISTMAS" 10760 PRINT"LABELS" 10770 PRINT"ENTER N[146] IF THIS IS FOR A NEW" 10780 PRINT"FILE. ENTER 'B' TO LOAD BACKUP FILE" 10785 PRINT"ENTER ANY OTHER KEY IF THE MAIN FILE" 10790 PRINT"ALREADY EXISTS" 10800 GETN$:IFN$=""THEN10800 10810 RETURN 11000 REM *************************** 11010 REM * USER NOTES ON MAIL.64 11020 REM * THIS PROGRAM WAS ORIGINALLY 11030 REM * WRITTEN FOR A VIC20 BY D. 11040 REM * JOHNSON. WE UPGRADED IT TO 11050 REM * BETTER RUN ON THE C64. 11060 REM * 11070 REM * THE MENU IS RELATIVELY EASY 11080 REM * TO FOLLOW. YOU HAVE A 5 11090 REM * LINE ADDRESS TO ENTER. TO 11100 REM * INDENT INFO (ZIP CODE) USE 11110 REM * SHIFTED SPACES. TO KEEP 11120 REM * ADDRESS INFO FROM PRINTING 11130 REM * ON LABELS, PUT A LEFT ARROW 11140 REM * IN THE FIRST POSITION. 11150 REM * THERE ARE TWO LABEL FIELDS. 11160 REM * THE FIRST IS INTENDED TO BE 11170 REM * BE USED FOR CHRISTMAS CARD 11180 REM * LABELS. PUT IN A 'Y' TO 11190 REM * HAVE THE ADDRESS PRINTED 11200 REM * DURING THE CHRISTMAS LABEL 11210 REM * RUN. THE OTHER FIELD IS 11220 REM * FOR MISC. LABELS. YOU CAN 11230 REM * PUT AN 'A' IN IT AND THEN 11240 REM * PRINT LABELS FOR ALL 11250 REM * ADDRESSES WITH AN 'A'. 11260 REM * 11270 REM * PLAY AROUND WITH THE OTHER 11280 REM * OPTIONS. THEY'RE PRETTY 11290 REM * EASY TO FOLLOW. 11300 REM * 11310 REM * IF YOU LIKE THE PROGRAM OR 11320 REM * MAKE A GOOD MODIFICATION, 11330 REM * I WOULD LIKE TO HEAR FROM 11340 REM * YOU. PLEASE DROP ME A CARD 11350 REM * AT THE ADDRESS AT THE FIRST 11360 REM * PART OF THE PROGRAM. 11370 REM * 11380 REM * -- DELETE THESE NOTES AFTER 11390 REM * READING OR LISTING THEM. 11395 REM * AL JOHNSON 11400 REM ****************************